草庐IT

json - 在 map[string]interface{} 的值上键入 switch 到 []map[string]interface{}

全部标签

ruby-on-rails - 如何将哈希键从 `Symbol` s 更改为 `String` s?

我正在使用RubyonRails3.2.2,我想“轻松”/“快速”将散列键从Symbol更改为String。也就是说,从{:one=>"Value1",:two=>"Value2",...}到{"one"=>"Value1","two"=>"值2",...}.我怎样才能使用尽可能少的代码来做到这一点? 最佳答案 只需调用stringify_keys(或stringify_keys!)http://apidock.com/rails/Hash/stringify_keys 关于ruby-o

ruby - 在 Rails 中,如何向 String 类添加一个新方法?

我想为我的Rails项目中的不同对象构建一个索引,并想添加一个我可以在String对象上调用的“count_occurences”方法。我看到我可以做类似的事情classStringdefself.count_occurencesdo_something_hereendend定义此方法的确切方法是什么,以及将代码放在我的Rails项目中的什么位置?谢谢 最佳答案 您可以在lib/ext/string.rb的应用程序中定义一个新类,并将以下内容放入其中:classStringdefto_magic"magic"endend要加载此类,

ruby 1.9 : how can I properly upcase & downcase multibyte strings?

因此matz决定在ruby​​1.9.1中将upcase和downcase限制为/[A-Z]/i。ActiveSupport::Multibyte长期以来在ruby​​1.8.x中通过String#mb_chars进行了很好的i18n大小写调整。但是在ruby1.9.1下试了一下,好像不行。这是我编写的一个简单的测试脚本,以及我得到的输出:$cattest.rb#encoding:UTF-8puts("@#{RUBY_VERSION}"+(__ENCODING__rescue$KCODE).to_s)sd,su="Iñtërnâtiônàlizætiøn","IÑTËRNÂTIÔNÀL

ruby - map、each 和 collect 之间有什么区别?

这个问题在这里已经有了答案:what'sdifferentbetweeneachandcollectmethodinRuby[duplicate](7个答案)关闭8年前。在Ruby中,each、map、collect的功能有区别吗?

ruby - 按 Ruby 中哈希的值降序排序

我的输入哈希:h={"a"=>20,"b"=>30,"c"=>10}升序排序:h.sort{|a,b|a[1]b[1]}#=>[["c",10],["a",20],["b",30]]但是,我需要[["b",30],["a",20],["c",10]]我们怎样才能让它以相反的方式工作,是什么?什么意思? 最佳答案 您可以同时让它更干净、更清晰、更快!像这样:h.sort_by{|k,v|v}.reverse我对使用随机值对1000元素散列进行排序的3000次迭代的计时进行了基准测试,并得到了这些时间:h.sort{|x,y|-(x[1

ruby-on-rails - 在Ruby on Rails中,要扩展String类,代码应该放在哪里?

如果在RubyonRails上,我需要添加一个名为classStringdefcapitalize_first#...endend想知道文件应该放在哪里?(哪个目录和文件名,是否需要任何初始化代码?)这是针对Rails3.0.6项目的。 最佳答案 我总是在我的lib目录中添加一个core_ext目录。创建一个initializer用于加载自定义扩展(例如:config/initializers/core_exts.rb)。并在其中添加以下行:Dir[File.join(Rails.root,"lib","core_ext","*.r

ruby-on-rails - rails : Validating min and max length of a string but allowing it to be blank

我有一个要验证的字段。我希望该字段能够留空,但如果用户正在输入数据,我希望它采用某种格式。目前我在模型中使用以下验证,但这不允许用户将其留空:validates_length_of:foo,:maximum=>5validates_length_of:foo,:minimum=>5如何编写此代码以实现我的目标? 最佳答案 你也可以使用这种格式:validates:foo,length:{minimum:5,maximum:5},allow_blank:true或者因为您的最小值和最大值相同,以下也将起作用:validates:foo

ruby-on-rails - 如何将单个列的值放入数组中

现在我正在做这样的事情来选择一列数据:points=Post.find_by_sql("selectpointfromposts")然后将它们传递给一个方法,我希望我的方法保持不可知,现在必须从我的方法中调用hash.point。如何快速将其转换为数组并将数据集传递给我的方法,或者有更好的方法吗? 最佳答案 在Rails3.2中有一个pluckmethod为此就像这样:Person.pluck(:id)#SELECTpeople.idFROMpeoplePerson.pluck(:role).uniq#uniquerolesfrom

ruby 心印 : Why convert list of symbols to strings

我指的是RubyKoans中about_symbols.rb中的这个测试https://github.com/edgecase/ruby_koans/blob/master/src/about_symbols.rb#L26deftest_method_names_become_symbolssymbols_as_strings=Symbol.all_symbols.map{|x|x.to_s}assert_equaltrue,symbols_as_strings.include?("test_method_names_become_symbols")end#THINKABOUTIT:#

ruby - 如何使用正则表达式和反向引用编写 Ruby switch 语句(case...when)?

我知道我可以编写Rubycase语句来检查与正则表达式的匹配。但是,我想在返回语句中使用匹配数据。像这样的半伪代码:foo="10/10/2011"casefoowhen/^([0-9][0-9])/print"themonthis#{match[1]}"elseprint"somethingelse"end我怎样才能做到这一点?谢谢!请注意:我知道我永远不会在上述简单情况下使用switch语句,但这只是一个示例。实际上,我试图实现的是为一个可以用各种方式编写的日期匹配许多潜在的正则表达式,然后相应地使用Ruby的Date类对其进行解析。 最佳答案